This invention relates generally to improving software testing, and particularly to identifying public and private code in a test application.
Software applications written by developers can include code written by the developer (“private code”) as well as code retrieved from a repository of public code (“public code”). Public code is available from many different sources, and permits a software developer to add functionality from the public code without re-writing functionality that is already available at the public repository. This public code typically includes functions that may be of interest to many different developers, for example to provide back-end services, logging, database access and maintenance, and other types of services, among other functions. The public code may be retrieved and included with other functions that are written by the developer (“private code”) to form an application.
To determine errors and perform other analysis of the application, testing may be performed on the application by a code testing system. The code testing system automatically analyzes the application, and may apply static (on the code itself) or dynamic (on the executing application) testing to determine potential problems in the application, such as memory leaks, security vulnerabilities, and the like. For applications of any significant size, the application testing may take substantial time for a full suite of testing. During this testing period, the application developers typically cannot change the version as it is being tested, and the application developer must wait for the testing to complete. Current testing may test the application without regard to the source of the code (i.e., public or private code). For public code, problems in the application represent problems generated by (and typically fixable by) the authors of the public code. By including the public code in normal testing by the code testing system, the tests may take a long time to exercise portions of the public code, and may report errors that are irrelevant to the application developer because the developer does not have control over the public code.